﻿/*
 *      CentroVentasCore32  - CVCore32.dll
 *      
 *      Desarrollado por:
 *                      Francisco Acevedo.
 *                      David Avila.
 *                      José Pérez.
 *                      
 *      Todos los derechos reservados.
 */

/*
 *      CLASE: FrmProveedorCrear   
 * Notas de versión:
 * 
 * [16-01-2012]
 *      -   Creacion de la clase.
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;



namespace CentroVentas.Forms.Proveedor
{
    /// <summary>
    /// Lógica de interacción para FrmProveedorCrear.xaml
    /// </summary>
    public partial class FrmProveedorCrear : Page
    {

        CVCore32.Class.Funciones.Ubicacion.Ubicacion ubi = new CVCore32.Class.Funciones.Ubicacion.Ubicacion();

        public FrmProveedorCrear()
        {
            InitializeComponent();
        }

        private void Page_Loaded(object sender, RoutedEventArgs e)
        {

            txtRutProveedor.Focus();

            cboRegion.Items.Clear();

            foreach (String item in ubi.GetRegiones())
            {
                cboRegion.Items.Add(item);
            }
            cboRegion.SelectedIndex = 0;

            btnAceptar.IsEnabled = false;

            cboRegion.IsEnabled = false;
            cboProvincia.IsEnabled = false;
            cboComuna.IsEnabled = false;
        }

        private void txtRutProveedor_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (!String.IsNullOrEmpty(txtRutProveedor.Text))
                {
                    if (CVCore32.Class.Funciones.Proveedores.Proveedor.ExisteProveedor(txtRutProveedor.Text))
                    {
                        MessageBox.Show("Proveedor existe.", "CentroVentas", MessageBoxButton.OK, MessageBoxImage.Information);

                        CVCore32.Data.Proveedor proveedor = CVCore32.Class.Funciones.Proveedores.Proveedor.getProveedor(txtRutProveedor.Text);

                        txtRutProveedor.IsEnabled = true;

                        txtNombreProveedor.IsReadOnly = true;
                        txtCatalogoProveedor.IsReadOnly = true;
                        txtContactoProveedor.IsReadOnly = true;
                        txtCorreoProveedor.IsReadOnly = true;
                        txtDireccion1Proveedor.IsReadOnly = true;
                        txtDireccion2Proveedor.IsReadOnly = true;
                        txtGiroProveedor.IsReadOnly = true;
                        txtNombreProveedor.IsReadOnly = true;
                        txtTelefonoProveedor.IsReadOnly = true;
                        txtWebProveedor.IsReadOnly = true;
                        txtComentariosProveedor.IsReadOnly = true;
                        cboRegion.IsEnabled = false;
                        cboProvincia.IsEnabled = false;
                        cboComuna.IsEnabled = false;

                        txtNombreProveedor.Text = proveedor.Nombre;
                        txtCatalogoProveedor.Text = proveedor.Catalogo;
                        txtContactoProveedor.Text = proveedor.Vendedor;
                        txtCorreoProveedor.Text = proveedor.Email;
                        txtDireccion1Proveedor.Text = proveedor.Direccion1;
                        txtDireccion2Proveedor.Text = proveedor.Direccion2;
                        txtGiroProveedor.Text = proveedor.Giro;
                        txtTelefonoProveedor.Text = proveedor.Telefono;
                        txtWebProveedor.Text = proveedor.Web;
                        txtComentariosProveedor.Text = proveedor.Comentarios;
                        cboRegion.Items.Clear();
                        cboRegion.Items.Add(proveedor.Comuna1.Provincia1.Region1.Nombre);
                        cboProvincia.Items.Clear();
                        cboProvincia.Items.Add(proveedor.Comuna1.Provincia1.Nombre);
                        cboComuna.Items.Clear();
                        cboComuna.Items.Add(proveedor.Comuna1.NombreComuna);
                        cboRegion.Text = proveedor.Comuna1.Provincia1.Region1.Nombre;
                        cboProvincia.Text = proveedor.Comuna1.Provincia1.Nombre;
                        cboComuna.Text = proveedor.Comuna1.NombreComuna;

                        btnAceptar.IsEnabled = false;
                    }
                    else
                    {
                        if (CVCore32.Class.Funciones.Utiles.RUT.Valido(txtRutProveedor.Text))
                        {
                            txtRutProveedor.IsEnabled = false;

                            txtNombreProveedor.IsReadOnly = false;
                            txtCatalogoProveedor.IsReadOnly = false;
                            txtContactoProveedor.IsReadOnly = false;
                            txtCorreoProveedor.IsReadOnly = false;
                            txtDireccion1Proveedor.IsReadOnly = false;
                            txtDireccion2Proveedor.IsReadOnly = false;
                            txtGiroProveedor.IsReadOnly = false;
                            txtNombreProveedor.IsReadOnly = false;
                            txtTelefonoProveedor.IsReadOnly = false;
                            txtWebProveedor.IsReadOnly = false;

                            txtComentariosProveedor.IsReadOnly = false;

                            cboRegion.IsEnabled = true;
                            cboProvincia.IsEnabled = true;
                            cboComuna.IsEnabled = true;

                            cboRegion.Items.Clear();

                            foreach (String item in ubi.GetRegiones())
                            {
                                cboRegion.Items.Add(item);
                            }
                            cboRegion.SelectedIndex = 0;

                            btnAceptar.IsEnabled = true;

                            txtNombreProveedor.Focus();
                        }
                        else
                        {
                            MessageBox.Show("Rut no valido.", "CentroVentas", MessageBoxButton.OK, MessageBoxImage.Warning);
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Debes escribir un rut", "CentroVentas", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }
        }

        private void cboRegion_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.Source.ToString() != "System.Windows.Controls.ComboBox Items.Count:0")
            {
                string region = e.AddedItems[0].ToString();

                cboProvincia.Items.Clear();

                foreach (String item in ubi.GetProvincias(region))
                {
                    cboProvincia.Items.Add(item);
                }
                cboProvincia.SelectedIndex = 0;
            }
        }

        private void cboProvincia_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            if (e.Source.ToString() != "System.Windows.Controls.ComboBox Items.Count:0")
            {
                string provincia = e.AddedItems[0].ToString();

                cboComuna.Items.Clear();

                foreach (string item in ubi.GetComunas(provincia))
                {
                    cboComuna.Items.Add(item);
                }

                cboComuna.SelectedIndex = 0;
            }
        }

        private void btnAceptar_Click(object sender, RoutedEventArgs e)
        {
            bool listo = true;
            if (string.IsNullOrWhiteSpace(txtNombreProveedor.Text)) listo = false;
            if (string.IsNullOrWhiteSpace(txtGiroProveedor.Text)) listo = false;
            if (string.IsNullOrWhiteSpace(txtDireccion1Proveedor.Text)) listo = false;
            if (string.IsNullOrWhiteSpace(txtDireccion2Proveedor.Text)) listo = false;
            if (string.IsNullOrWhiteSpace(txtContactoProveedor.Text)) listo = false;

            if (listo)
            {
                BackgroundWorker worker = new BackgroundWorker();
                //this is where the long running process should go
                worker.DoWork += (o, ea) =>
                {
                    //no direct interaction with the UI is allowed from this method
                    for (int i = 0; i < 100; i++)
                    {
                        System.Threading.Thread.Sleep(25);
                    }
                };
                worker.RunWorkerCompleted += (o, ea) =>
                {

                    List<string> Faltantes = new List<string>();

                    if (String.IsNullOrWhiteSpace(txtCorreoProveedor.Text)) Faltantes.Add("- Email");
                    if (String.IsNullOrWhiteSpace(txtWebProveedor.Text)) Faltantes.Add("- Website");
                    if (String.IsNullOrWhiteSpace(txtCatalogoProveedor.Text)) Faltantes.Add("- Catalogo");
                    if (String.IsNullOrWhiteSpace(txtTelefonoProveedor.Text)) Faltantes.Add("- Telefono");
                    if (String.IsNullOrWhiteSpace(txtComentariosProveedor.Text)) Faltantes.Add("- Comentarios");

                    string listado = string.Empty;

                    foreach (string item in Faltantes)
                    {
                        listado += item + "\n";
                    }

                    if (Faltantes.Count != 0)
                    {
                        CommonDialog.CustomDialog cd = new CommonDialog.CustomDialog();
                        cd.AdditionalDetailsText = listado;
                        cd.Buttons = CommonDialog.CustomDialogButtons.YesNo;
                        cd.ButtonsDisabledDelay = 3;
                        cd.Caption = "CentroVentas";
                        cd.DefaultButton = CommonDialog.CustomDialogResults.Yes;
                        cd.FooterIcon = CommonDialog.CustomDialogIcons.Question;
                        cd.FooterText = "¿Desea continuar?";
                        cd.InstructionHeading = "Existen datos sin llenar";
                        cd.InstructionIcon = CommonDialog.CustomDialogIcons.Information;
                        cd.InstructionText = "Los siguientes datos no fueron establecidos:";

                        if (cd.Show() == CommonDialog.CustomDialogResults.Yes)
                        {
                            try
                            {
                                CVCore32.Class.Funciones.Proveedores.Proveedor.CrearProveedor(txtRutProveedor.Text, txtNombreProveedor.Text, txtGiroProveedor.Text, txtContactoProveedor.Text, txtTelefonoProveedor.Text, txtDireccion1Proveedor.Text, txtDireccion2Proveedor.Text, CVCore32.Class.Funciones.Ubicacion.Ubicacion.getComunaId(cboComuna.Text), txtCorreoProveedor.Text, txtWebProveedor.Text, txtCatalogoProveedor.Text, txtComentariosProveedor.Text);
                                MessageBox.Show("Operacion terminada.", "CentroVentas", MessageBoxButton.OK, MessageBoxImage.Information);
                                NavigationService.GetNavigationService(this).Navigate(new Forms.Proveedor.FrmProveedorListar(string.Empty));
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message);
                            }


                        }

                    }
                    else
                    {
                        try
                        {
                            CVCore32.Class.Funciones.Proveedores.Proveedor.CrearProveedor(txtRutProveedor.Text, txtNombreProveedor.Text, txtGiroProveedor.Text, txtContactoProveedor.Text, txtTelefonoProveedor.Text, txtDireccion1Proveedor.Text, txtDireccion2Proveedor.Text, CVCore32.Class.Funciones.Ubicacion.Ubicacion.getComunaId(cboComuna.Text), txtCorreoProveedor.Text, txtWebProveedor.Text, txtCatalogoProveedor.Text, txtComentariosProveedor.Text);

                            MessageBox.Show("Operacion terminada.", "CentroVentas", MessageBoxButton.OK, MessageBoxImage.Information);
                            NavigationService.GetNavigationService(this).Navigate(new Forms.Proveedor.FrmProveedorListar(string.Empty));
                        }
                        catch (Exception ex)
                        {

                            MessageBox.Show(ex.Message);
                        }
                    }
                    /////////
                    //work has completed. you can now interact with the UI
                    Busy.IsBusy = false;
                };
                //set the IsBusy before you start the thread
                Busy.IsBusy = true;
                worker.RunWorkerAsync();

            }
            else
            {
                MessageBox.Show("Faltan datos", "Codigo-Source", MessageBoxButton.OK, MessageBoxImage.Exclamation);
            }
        }
    }
}
